From: Dirk-Jan C. Binnema Date: Sat, 27 Feb 2010 08:29:13 +0000 (+0200) Subject: Improve 12/24 clock detection X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~10360 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=046e0609abff6ad3ced0120e997fba7469e62e83;p=gnome-shell.git Improve 12/24 clock detection The current check looks at whether there was some am/pm suffix in the localized time; however in some cases (locales) that does not seem to work. this version instead checks whether the localized versions of 05:00 and 17:00 start with the same two digits; if not, it's probably a 24h clock. https://bugzilla.gnome.org/show_bug.cgi?id=603488 --- diff --git a/js/ui/panel.js b/js/ui/panel.js index d4f34301f..6cce4c62e 100644 --- a/js/ui/panel.js +++ b/js/ui/panel.js @@ -616,15 +616,22 @@ Panel.prototype = { displayDate.setMinutes(displayDate.getMinutes() + 1); msecRemaining += 60000; } - /* If there is no am or pm, time format is 24h */ - let isTime24h = displayDate.toLocaleFormat("x%p") == "x"; - if (isTime24h) { - /* Translators: This is the time format used in 24-hour mode. */ - this._clock.set_text(displayDate.toLocaleFormat(_("%a %R"))); - } else { - /* Translators: This is a time format used for AM/PM. */ - this._clock.set_text(displayDate.toLocaleFormat(_("%a %l:%M %p"))); - } + + // if the locale representations of 05:00 and 17:00 do not + // start with the same 2 digits, it must be a 24h clock + let fiveAm = new Date(); + fiveAm.setHours(5); + let fivePm = new Date(); + fivePm.setHours(17); + let isTime24h = fiveAm.toLocaleFormat("%X").substr(0,2) != + fivePm.toLocaleFormat("%X").substr(0,2); + if (isTime24h) { + /* Translators: This is the time format used in 24-hour mode. */ + this._clock.set_text(displayDate.toLocaleFormat(_("%a %R"))); + } else { + /* Translators: This is a time format used for AM/PM. */ + this._clock.set_text(displayDate.toLocaleFormat(_("%a %l:%M %p"))); + } Mainloop.timeout_add(msecRemaining, Lang.bind(this, this._updateClock)); return false; },